from django.core.management.base import BaseCommand
from apps.menu.models import SysRole,SysRoleMenu,SysMenu

class Command(BaseCommand):
    help = 'Import roles menu'
    def handle(self, *args, **options):
        # 获取角色
        role_admin = SysRole.objects.get(code='ADMIN')  # 获取 'ADMIN' 角色
        role_super_admin = SysRole.objects.get(code='SUPER_ADMIN')  # 获取 'SUPER_ADMIN' 角色
        role_user = SysRole.objects.get(code='USER')  # 获取 'USER' 角色

        # 获取菜单（假设这些菜单已经存在）
        menu_home = SysMenu.objects.get(name='首页')  # 获取 '首页' 菜单
        menu_user_manage = SysMenu.objects.get(name='用户管理')  # 获取 '用户管理' 菜单
        menu_role_manage = SysMenu.objects.get(name='角色管理')  # 获取 '角色管理' 菜单
        menu_permission_manage = SysMenu.objects.get(name='权限管理')  # 获取 '权限管理' 菜单
        menu_settings = SysMenu.objects.get(name='设置')  # 获取 '设置' 菜单
        menu_log_manage = SysMenu.objects.get(name='日志管理')  # 获取 '日志管理' 菜单
        menu_button_manage = SysMenu.objects.get(name='按钮管理')  # 获取 '按钮管理' 菜单

        # 创建角色和菜单的关联关系
        role_menu_objs = []

        # 给 'ADMIN' 角色分配菜单
        role_menu_objs.append(SysRoleMenu(role=role_admin, menu=menu_home))
        role_menu_objs.append(SysRoleMenu(role=role_admin, menu=menu_user_manage))
        role_menu_objs.append(SysRoleMenu(role=role_admin, menu=menu_role_manage))
        role_menu_objs.append(SysRoleMenu(role=role_admin, menu=menu_permission_manage))
        role_menu_objs.append(SysRoleMenu(role=role_admin, menu=menu_settings))
        role_menu_objs.append(SysRoleMenu(role=role_admin, menu=menu_log_manage))

        # 给 'SUPER_ADMIN' 角色分配菜单（假设超级管理员拥有所有菜单权限）
        role_menu_objs.append(SysRoleMenu(role=role_super_admin, menu=menu_home))
        role_menu_objs.append(SysRoleMenu(role=role_super_admin, menu=menu_user_manage))
        role_menu_objs.append(SysRoleMenu(role=role_super_admin, menu=menu_role_manage))
        role_menu_objs.append(SysRoleMenu(role=role_super_admin, menu=menu_permission_manage))
        role_menu_objs.append(SysRoleMenu(role=role_super_admin, menu=menu_settings))
        role_menu_objs.append(SysRoleMenu(role=role_super_admin, menu=menu_log_manage))
        role_menu_objs.append(SysRoleMenu(role=role_super_admin, menu=menu_button_manage))

        # 给 'USER' 角色分配菜单（普通用户只有基本权限）
        role_menu_objs.append(SysRoleMenu(role=role_user, menu=menu_home))
        role_menu_objs.append(SysRoleMenu(role=role_user, menu=menu_user_manage))

        # 批量插入到数据库
        SysRoleMenu.objects.bulk_create(role_menu_objs)

        self.stdout.write(self.style.SUCCESS(f'Successfully imported {len(role_menu_objs)} role-menu associations'))